// 1. new 基本类型 与 对象类型的区别 （指针） // 形参数指向了新的地址 所以 后续的更改不会影响 website 的指针指向的内容
// function changeObjProperty(o) {
//     o.siteUrl = "http://www.baidu.com"
//     o = new Object()
//     o.siteUrl = "http://www.google.com"
// }
// let webSite = new Object();
// changeObjProperty(webSite);
// console.log(webSite.siteUrl);
// "http://www.baidu.com"


// 1. 作用域链
// var name = 'Tom';
// (function () {
//     if (typeof name == 'undefined') {
//         name = 'Jack';
//         console.log('Goodbye ' + name);
//     } else {
//         console.log('Hello ' + name); // M
//     }
// })();

// var name = 'Tom';
// (function () {
//     if (typeof name == 'undefined') {
//         var name = 'Jack';
//         console.log('Goodbye ' + name); // M
//     } else {
//         console.log('Hello ' + name);
//     }
// })();

// var name = 'Tom';
// (function () {
//     if (typeof name == 'undefined') {
//         let name = 'Jack';
//         console.log('Goodbye ' + name);
//     } else {
//         console.log('Hello ' + name); // M
//     }
// })();
// 正常 Hello
// 内部加个var Goodbye
// 内部加let Hello



// function foo() {
//   console.log(a);
//   a = 1;
// }
// foo(); // ??? undefined
// function bar() {
//   a = 1;
//   console.log(a);
// }
// bar(); // ??? 1



var a = { n: 1 }; // #000
var b = a;
a.x = a = { n: 2 }; // 同时进行 #000 的x 变了     a的指向变了  b 没变
console.log(a)
console.log(a.x)
console.log(b)
console.log(b.x)
// https://blog.csdn.net/weixin_43221323/article/details/108528039



// var a = 10;
// (function () {
//     console.log(a) // undefined
//     a = 5
//     console.log(window.a) // 10
//     var a = 20;
//     console.log(a) // 20
// })()


  // 9. 输出
        // var b = 10;
        // (function b() {
        //     b = 20;
        //     console.log(b);
        // })();

        // var b = 10;
        // (function b() {
        //     b = 20;
        //     console.log(b);
        // })();